package com.zjsru.oneDay202205;

import java.util.Arrays;

/**
 * @Author: likew
 * @Date: 2022/5/19
 *
 * 最少移动次数使数组元素相等 II
 *  给你一个长度为 n 的整数数组 nums ，返回使所有数组元素相等需要的最少移动数。
 *  在一步操作中，你可以使数组中的一个元素加 1 或者减 1 。
 *
 * 输入：nums = [1,2,3]
 * 输出：2
 * 解释：
 * 只需要两步操作（每步操作指南使一个元素加 1 或减 1）：
 * [1,2,3]  =>  [2,2,3]  =>  [2,2,2]
 *
 * 输入：nums = [1,10,2,9]
 * 输出：16
 */
public class minMoves2 {
    public int minMoves2(int[] nums) {
        int n = nums.length;
        int s = (n - 1) / 2;
        Arrays.sort(nums);
        int count = 0;
        for (int i :nums) {
           count +=  Math.abs(nums[s] - i);
        }
        return count;
    }
    
    public static void main(String[] args) {
        minMoves2 minMoves2 = new minMoves2();
        int[] nums = new int[]{1,10,2,9};
        System.out.println(minMoves2.minMoves2(nums));
    }
}
